package com.wing.product.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wing.common.utils.JsonResult;
import com.wing.device.model.response.DeviceWorkshopVO;
import com.wing.product.model.entity.ProductDispatchWork;
import com.wing.product.model.request.ProductDispatchWorkInfoForm;
import com.wing.product.model.response.ProductDispatchWorkInfoEditVO;
import com.wing.product.model.response.ProductDispatchWorkUserVO;
import com.wing.product.model.response.ProductDispatchWorkVO;
import com.wing.system.model.response.DingTalkAttendanceGroupUseVo;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface ProductDispatchWorkService extends IService<ProductDispatchWork> {

    /**
     * 查询所有车间列表
     * @return
     */
    List<DeviceWorkshopVO> getDeviceWorkshopList();


    /**
     * 查询所有 钉钉同步过来的考勤组
     * @return
     */
    List<DingTalkAttendanceGroupUseVo> selAllGroupList();


    /**
     * 根据车间信息，派工日期，考勤组    查询对应的工位信息 责任岗位
     * 其中 人员和考勤组人员 的交集信息  是可选的
     */
    Page<ProductDispatchWorkVO> checkDeviceWorkToAttendanceTime(String workshopId, String groupId);


    /**
     *  根据岗位获取出对应的员工信息  用时  通过日期 获取出对应日期对应考勤组的人员情况   找出他们之间的交集
     */
    List<ProductDispatchWorkUserVO> getDispatchWorkUserInfo(String postId, String groupId, String dispatchWorkDate);

    /**
     * 查询派工信息列表
     * @param page
     * @param params
     * @return
     */
    Page<ProductDispatchWorkVO> selDispatchListInfo(Page page, Map<String, Object> params);


    /**
     * 添加派工信息
     * @param productDispatchWorkInfoForm
     */
    JsonResult saveDispatchWorkInfo(ProductDispatchWorkInfoForm productDispatchWorkInfoForm);

    /**
     * 获取顶部对应的统计信息
     * @param workshopId
     * @param groupId
     * @return
     */
    HashMap<String, Object> getTopDispatchCount(String workshopId, String groupId);


    /**
     * 修改派工时，获取填写信息的基础数据
     * @param dispatchWorkNumber
     * @return
     */
    ProductDispatchWorkInfoEditVO getDispatchWorkInfoEditList(String dispatchWorkNumber,Long id);

}
